/*
 * Estado.java
 * 
 * Created on 29/Nov/2007, 15:50:05
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Estado;

import Dicionario.Dicionario;
import Dicionario.Frase;
import Dicionario.ListaFrases;
import java.util.ArrayList;

/**
 *
 * @author Pedro
 */




public class Estado implements IEstado {

    int id;
    String palavra;
    private ArrayList<StateArrow> caminhos;
    ArrayList<Integer> inicios;
    ArrayList<Integer> fins;

    //Constructor
    public Estado(int i) {

   
        caminhos = new ArrayList<StateArrow>();
        inicios = new ArrayList<Integer>();
        fins = new ArrayList<Integer>();

       id = i;
//       inicios=lf.getListaInicios(i);
//       fins= lf.getListaFins(i);
//       caminhos=lf.getListaCaminhos(i);
       
       //palavra= d.getPalavra(i);
        /* 
        setInicios(lf.getListaInicios(i));
        setFins(lf.getListaFins(i));
        setCaminhos(lf.getListaCaminhos(i));
        */
        
    }
    public Estado(int i, ListaFrases lf, Dicionario d) {

   
        caminhos = new ArrayList<StateArrow>();
        inicios = new ArrayList<Integer>();
        fins = new ArrayList<Integer>();

       id = i;
//       inicios=lf.getListaInicios(i);
//       fins= lf.getListaFins(i);
//       caminhos=lf.getListaCaminhos(i);
       
       //palavra= d.getPalavra(i);
        /* 
        setInicios(lf.getListaInicios(i));
        setFins(lf.getListaFins(i));
        setCaminhos(lf.getListaCaminhos(i));
        */
        
    }

    public void setCaminhos(ArrayList<StateArrow> f) {
        caminhos = f;
    }
    // se o array dos camonhos ja contem uma seta para a palavra vai buscar esse
    // statearrow aos caminhos e adiciona a frase do recebido ao dos caminhos
    public void addStateArrow (StateArrow sa)
    {
        int size = caminhos.size();
       Frase faf =new Frase(palavra);
        
        if(size==0)
             caminhos.add(sa);
        else{
        for(int i=0;i<size;i++)
        if(caminhos.get(i).getPalavra()== sa.getPalavra())
            caminhos.get(i).addFrase(sa.getFirstFrase());
            
            //System.out.println("iellou");
        
        }
    }

    public void setInicios(ArrayList<Integer> f) {

        inicios = f;
    }
    public void setInicios(int id) {

        inicios.add(id);
    }

    public void setFins(ArrayList<Integer> f) {
        fins = f;
    }
    
    public void setFins(int id) {
        fins.add(id);
    }

    public ArrayList<StateArrow> getCaminhos() {
        return caminhos;
    }

    public int getId() {

        return id;
    }

    public ArrayList getInicios() {

        return inicios;
    }
     
    public int getInicio(int index)
    {
       return inicios.get(index);
    }
    public ArrayList getFins() {

        return fins;
    }
    
    public void setPalavra(String str)
  { palavra=str;
    }
}